package sv.gob.mtps.sib.service;

import java.util.List;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import sv.gob.mtps.sib.dao.PedidoDAO;
import sv.gob.mtps.sib.model.Bodega;
import sv.gob.mtps.sib.model.FacturaHasProducto;
import sv.gob.mtps.sib.model.Fuentefondo;
import sv.gob.mtps.sib.model.Inventario;
import sv.gob.mtps.sib.model.InventarioHasTransacciones;
import sv.gob.mtps.sib.model.InventarioPedidoVw;
import sv.gob.mtps.sib.model.Objetoespecifico;
import sv.gob.mtps.sib.model.Pedido;
import sv.gob.mtps.sib.model.PedidoHasProducto;
import sv.gob.mtps.sib.model.PedidoMastVw;
import sv.gob.mtps.sib.model.PedidosDetVw;
import sv.gob.mtps.sib.model.ProductoHasObjetoespecifico;
import sv.gob.mtps.sib.model.SeccionUnidadVw;
import sv.gob.mtps.sib.model.Transaccion;

@Service
public class PedidoServiceImpl implements PedidoService{
	
	@Autowired
    private PedidoDAO pedidoDAO;

	@Transactional
	public void addPedido(Pedido pedido) {
		pedidoDAO.addPedido(pedido);		
	}

	@Transactional
	public List<Pedido> listPedido() {
		return pedidoDAO.listPedido();
	}

	@Transactional
	public void removePedido(Integer id) {
		pedidoDAO.removePedido(id);		
	}

	@Transactional
	public Pedido findPedido(Integer id) {
		return pedidoDAO.findPedido(id);
		
	}

	@Transactional
	public void updatePedido(Pedido pedido) {
		// TODO Auto-generated method stub
		pedidoDAO.updatePedido(pedido);
		
	}
	
	/*Se agregan los metodos 
     * para los update del detalle 
     * de la Factura*/

	@Transactional
	public void addPedidoDet(PedidoHasProducto pedidoDet) {
		// TODO Auto-generated method stub
		pedidoDAO.addPedidoDet(pedidoDet);
	}

	@Transactional
	public List<PedidoHasProducto> listPedidoDet(Integer id) {
		// TODO Auto-generated method stub
		return pedidoDAO.listPedidoDet(id);
	}

	@Transactional
	public void removePedidoDet(Integer id) {
		// TODO Auto-generated method stub
		pedidoDAO.removePedidoDet(id);
	}

	@Transactional
	public PedidoHasProducto findPedidoDet(Integer id) {
		// TODO Auto-generated method stub
		return pedidoDAO.findPedidoDet(id);
	}

	@Transactional
	public void updatePedidoDet(PedidoHasProducto pedidoDet) {
		// TODO Auto-generated method stub
		pedidoDAO.updatePedidoDet(pedidoDet);
		
	}

	@Transactional
	public List<Objetoespecifico> listObjeto() {
		// TODO Auto-generated method stub
		return pedidoDAO.listObjeto();
	}

	@Transactional
	public List<Bodega> listBodega() {
		// TODO Auto-generated method stub
		return pedidoDAO.listBodega();
	}

	@Transactional
	public List<Inventario> listInvent(int bodega, int fuenteFondo,
			int producto_objeto) {
		// TODO Auto-generated method stub
		return pedidoDAO.listInvent(bodega, fuenteFondo, producto_objeto);
	}

	@Transactional
	public void addInventario(Inventario inv) {
		// TODO Auto-generated method stub
		pedidoDAO.addInventario(inv);
	}

	@Transactional
	public Bodega findBodega(int id) {
		// TODO Auto-generated method stub
		return pedidoDAO.findBodega(id);
	}

	@Transactional
	public ProductoHasObjetoespecifico findPrdObj(int id) {
		// TODO Auto-generated method stub
		return pedidoDAO.findPrdObj(id);
	}

	@Transactional
	public void addTransaccion(InventarioHasTransacciones transact) {
		// TODO Auto-generated method stub
		pedidoDAO.addTransaccion(transact);
		
	}

	@Transactional
	public List<PedidoHasProducto> listFacturaDet(Integer id, Integer idProObj) {
		// TODO Auto-generated method stub
		return pedidoDAO.listPedidoDet(id, idProObj);
	}

	@Transactional
	public Transaccion findTransaccion(int id) {
		// TODO Auto-generated method stub
		return pedidoDAO.findTransaccion(id);
	}

	@Transactional
	public void updateInventario(Inventario inv) {
		// TODO Auto-generated method stub
		pedidoDAO.updateInventario(inv);
	}

	@Transactional
	public List<InventarioHasTransacciones> listTransacciones(int documentoPadre,int hijo, int tipoTran) {
		// TODO Auto-generated method stub
		return pedidoDAO.listTransacciones(documentoPadre,hijo,tipoTran);
	}

	@Transactional
	public List<PedidoHasProducto> listPedidoDet(Integer id, Integer idProObj) {
		// TODO Auto-generated method stub
		 		return pedidoDAO.listPedidoDet(id, idProObj);
	}

	@Transactional
	public List<InventarioPedidoVw> listInvent() {
		// TODO Auto-generated method stub
		return pedidoDAO.listInvent();
	}

	@Transactional
	public List<SeccionUnidadVw> listSeccionUnidad() {
		// TODO Auto-generated method stub
		return pedidoDAO.listSeccionUnidad();
	}

	@Transactional
	public List<PedidoMastVw> listPedidosMas() {
		// TODO Auto-generated method stub
		return pedidoDAO.listPedidosMas();
	}

	@Transactional
	public List<PedidosDetVw> listPedidosDet(int id) {
		// TODO Auto-generated method stub
		return pedidoDAO.listPedidosDet(id);
	}

	@Transactional
	public Inventario findInventario(int id) {
		// TODO Auto-generated method stub
		return pedidoDAO.findInventario(id);
	}
	
}
